home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!snorkelwacker!usc!wuarchive!decwrl!sun-barr!newstop!sun!parns.nsc.com
- From: michael@parns.nsc.com (Michael Wagnitz)
- Newsgroups: comp.sources.x
- Subject: v08i100: xmail, Patch2, Part05/05
- Message-ID: <141433@sun.Eng.Sun.COM>
- Date: 28 Aug 90 07:50:38 GMT
- Sender: news@sun.Eng.Sun.COM
- Lines: 1450
- Approved: argv@sun.com
-
- Submitted-by: michael@parns.nsc.com (Michael Wagnitz)
- Posting-number: Volume 8, Issue 100
- Archive-name: xmail/patch2.05
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 5 (of 5)."
- # Contents: Patch.02c
- # Wrapped by michael@harley on Mon Aug 27 12:47:27 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'Patch.02c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Patch.02c'\"
- else
- echo shar: Extracting \"'Patch.02c'\" \(53806 characters\)
- sed "s/^X//" >'Patch.02c' <<'END_OF_FILE'
- X ** create the menu buttons
- X */
- X! bw = above = to_left = NULL;
- X! x = 0;
- X! for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) {
- X! if (strcmp(dp->d_name, ".") && strcmp(dp->d_name, "..")) {
- X /*
- X ** If this 'folder file' is also a directory, mark it with a trailing slash '/'
- X */
- X! s = XtMalloc(path_length + strlen(dp->d_name) + 2);
- X! sprintf(s, "%s/%s", path, dp->d_name);
- X! if ((new_dir = opendir(s)) != NULL) {
- X! sprintf(tmp, "%s/", dp->d_name);
- X! XtSetArg(args[4], XtNlabel, tmp);
- X! } else
- X! XtSetArg(args[4], XtNlabel, dp->d_name);
- X! XtSetArg(args[5], XtNfromHoriz, to_left); n = 6;
- X! if (! to_left) XtSetArg(args[n], XtNfromVert, above); n++;
- X! bw = XtCreateManagedWidget("menubutton",commandWidgetClass,layout,args,n);
- X! if (to_left == NULL) above = bw;
- X! to_left = bw;
- X! if (++x % 3 == 0) { /* make box three items wide */
- X! x = 0;
- X! to_left = NULL;
- X! }
- X /*
- X ** If this 'folder' is a directory, add a button popup menu of its files.
- X */
- X! if (new_dir) {
- X! closedir(new_dir);
- X! sprintf(trans, dir_Trans, tmp, s, depth);
- X! XtOverrideTranslations(bw, XtParseTranslationTable(trans));
- X! }
- X! XtFree(s);
- X }
- X }
- X+ closedir(dirp);
- X }
- X /*
- X ** If no buttons were created for this menu, destroy the widget.
- X */
- X*** ../v1.1/environs.c Mon Jun 4 09:48:37 1990
- X--- environs.c Mon Aug 27 11:09:19 1990
- X***************
- X*** 19,25 ****
- X * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
- X * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- X * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- X! * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- X * PERFORMANCE OF THIS SOFTWARE.
- X *
- X * Author: Michael C. Wagnitz - National Semiconductor Corporation
- X--- 19,25 ----
- X * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
- X * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- X * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- X! * OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- X * PERFORMANCE OF THIS SOFTWARE.
- X *
- X * Author: Michael C. Wagnitz - National Semiconductor Corporation
- X***************
- X*** 28,37 ****
- X--- 28,95 ----
- X #include "global.h"
- X
- X extern char *mailrcFile();
- X+ char otherBuf[BUFSIZ];
- X
- X AliasRecPtr *aliases = NULL; /* array of mail alias strings */
- X
- X+
- X /*
- X+ ** @(#)addtobuf() - add text to recipient or file and folder names buffer
- X+ ** drop any leading backslash from a recipient name
- X+ */
- X+ void
- X+ addtobuf(text, buffer, current_line, otherBuffer)
- X+ char *text;
- X+ char *buffer;
- X+ char *current_line;
- X+ char *otherBuffer;
- X+ {
- X+ if (! index("./+", *text)) {
- X+ if (*buffer) strcat(buffer, ", ");
- X+ if (strlen(current_line) + strlen(text) > 71) {
- X+ strcat(buffer, "\n\t");
- X+ current_line += strlen(current_line);
- X+ }
- X+ strcat(buffer, (*text == '\\') ? &text[1] : text);
- X+ } else {
- X+ if (*otherBuffer) strcat(otherBuffer, ", ");
- X+ strcat(otherBuffer, text);
- X+ }
- X+ } /* addtobuf */
- X+
- X+
- X+ /*
- X+ ** @(#) de_alias(text, buffer, current_line, otherBuffer)
- X+ */
- X+ void
- X+ de_alias(text, buffer, current_line, otherBuffer)
- X+ char *text;
- X+ char *buffer;
- X+ char *current_line;
- X+ char *otherBuffer;
- X+ {
- X+ char *cp, *list;
- X+ int in_comma;
- X+
- X+
- X+ if (! index(text, ','))
- X+ addtobuf(text, buffer, ¤t_line, otherBuffer);
- X+ else {
- X+ for (list = text; *list;) {
- X+ in_comma = 0;
- X+ if (cp = index(list, ',')) {
- X+ *cp = '\0';
- X+ in_comma = 1;
- X+ } else cp = list + strlen(list);
- X+ addtobuf(list, buffer, ¤t_line, otherBuffer);
- X+ if (in_comma) *cp++ = ',';
- X+ list = cp;
- X+ }
- X+ }
- X+ } /* de_alias */
- X+
- X+
- X+ /*
- X ** @(#)alias() - return alias value(s) from mail, or name if no alias found
- X */
- X char *
- X***************
- X*** 40,47 ****
- X {
- X static char tmp[BUFSIZ];
- X static char buf[BUFSIZ];
- X! char *s, *p, *list, *value, *index();
- X int i, n;
- X FILE *fp;
- X
- X
- X--- 98,106 ----
- X {
- X static char tmp[BUFSIZ];
- X static char buf[BUFSIZ];
- X! char *line, *s, *p, *list, *value;
- X int i, n;
- X+ int testing_for_compound_address;
- X FILE *fp;
- X
- X
- X***************
- X*** 53,59 ****
- X **
- X ** We also provide support for the alias alias group, and the possibility that
- X ** the user has entered multiple names for an alias without comma separation,
- X! ** or that mail has handed us a list with wierd comma combinations due to the
- X ** user's attempts to include commas in the list. Support is also provided
- X ** for processing continuation lines, if we had to read the .mailrc ourselves.
- X */
- X--- 112,118 ----
- X **
- X ** We also provide support for the alias alias group, and the possibility that
- X ** the user has entered multiple names for an alias without comma separation,
- X! ** or that mail has handed us a list with weird comma combinations due to the
- X ** user's attempts to include commas in the list. Support is also provided
- X ** for processing continuation lines, if we had to read the .mailrc ourselves.
- X */
- X***************
- X*** 116,128 ****
- X aliases[n] = (AliasRec *) XtMalloc(sizeof(AliasRec));
- X for (; *p && (*p == ' ' || *p == '\t'); p++);
- X for (aliases[n]->name = p; *p && *p != ' ' && *p != '\t'; p++);
- X! for (*p++ = '\0'; *p && (*p == ' ' || *p == '\t'); p++);
- X for (aliases[n]->alias = p; *p && *p != '\n'; p++) {
- X if ((*p == ' ' || *p == '\t') && *(p+1) && *(p+1) != '\n' &&
- X *(p-1) != *p && *(p-1) != ',') *p = ',';
- X }
- X! for (s = p - 1; *s == ',' || *s == ' ' || *s == '\t'; s--);
- X! if (*++s == ',' || *s == ' ' || *s == '\t') *s = '\0';
- X if (*p) *p = '\0';
- X }
- X aliases[n] = (AliasRec *) XtMalloc(sizeof(AliasRec));
- X--- 175,215 ----
- X aliases[n] = (AliasRec *) XtMalloc(sizeof(AliasRec));
- X for (; *p && (*p == ' ' || *p == '\t'); p++);
- X for (aliases[n]->name = p; *p && *p != ' ' && *p != '\t'; p++);
- X! for (*p++ = '\0'; *p && index(" \t\"\'", *p); p++);
- X! testing_for_compound_address = True;
- X for (aliases[n]->alias = p; *p && *p != '\n'; p++) {
- X+ /*
- X+ ** if it contains a chevron or parenthesis, treat whole line as just one alias
- X+ */
- X+ if (testing_for_compound_address) {
- X+ if ((s = index(p, '<')) || (s = index(p, '('))) {
- X+ if (line = index(p, '\n')) { /* could be more than one */
- X+ if (s < line) { /* if its within this alias */
- X+ p = line; /* point to end of this alias */
- X+ if (*(p - 1) == '"' || /* could be true (no mailpid) */
- X+ *(p - 1) == '\'')
- X+ *(p - 1) = '\0';
- X+ break;
- X+ } else {
- X+ if (*s == '<' && (s = index(p, '(')) && s < line) {
- X+ p = line; /* point to end of this alias */
- X+ if (*(p - 1) == '"' || /* possibly not in mail */
- X+ *(p - 1) == '\'')
- X+ *(p - 1) = '\0';
- X+ break;
- X+ } else testing_for_compound_address = False;
- X+ }
- X+ } else { /* last entry of this record */
- X+ p += strlen(p); /* point to the end of line */
- X+ break;
- X+ }
- X+ } else testing_for_compound_address = False;
- X+ } /* end - if testing_for_compound_address */
- X if ((*p == ' ' || *p == '\t') && *(p+1) && *(p+1) != '\n' &&
- X *(p-1) != *p && *(p-1) != ',') *p = ',';
- X }
- X! for (s = p - 1; index(", \t", *s); s--);
- X! if (index(", \t", *++s)) *s = '\0';
- X if (*p) *p = '\0';
- X }
- X aliases[n] = (AliasRec *) XtMalloc(sizeof(AliasRec));
- X***************
- X*** 130,176 ****
- X }
- X /*
- X ** If input is made up of more than one word, check each word for aliasing.
- X */
- X! if (value = tmp) {
- X if (index(tmp, ',') || index(tmp, ' ') || index(tmp, '\t')) {
- X! buf[0] = '\0';
- X! for (p = value; *p;) {
- X! for (; *p && *p != ',' && *p != ' ' && *p != '\t'; p++);
- X! if (*p) *p++ = '\0';
- X for (n = 0; aliases[n]; n++) {
- X if (strcmp(value, aliases[n]->name) == 0) {
- X! if (*buf) strcat(buf, ", ");
- X! strcat(buf, aliases[n]->alias);
- X break;
- X }
- X }
- X! if (! aliases[n]) { /* If not an alias, use the name supplied. */
- X! if (*buf) strcat(buf, ", ");
- X! strcat(buf, value);
- X! }
- X! for (; *p && (*p == ',' || *p == ' ' || *p == '\t'); p++);
- X value = p;
- X if (*p) p++;
- X }
- X! value = buf;
- X! } else {
- X! /*
- X! ** Otherwise, test the single word for aliasing, substituting if matched.
- X! */
- X! for (n = 0; *tmp && aliases[n]; n++)
- X! if (strcmp(tmp, aliases[n]->name) == 0) {
- X! value = aliases[n]->alias;
- X break;
- X }
- X }
- X }
- X return ((char *)value);
- X } /* alias */
- X
- X-
- X /*
- X ** @(#)GetMailEnv() - Get environment value from mail or shell
- X! ** Accomodate the case of trailing blanks on the item.
- X */
- X char *
- X GetMailEnv(item)
- X--- 217,277 ----
- X }
- X /*
- X ** If input is made up of more than one word, check each word for aliasing.
- X+ ** If it contains a chevron or parenthesis, it is a 'compound' address type.
- X+ ** If line length approaches 80 characters, add a newline-tab and continue.
- X */
- X! if (*(value = tmp)) {
- X! buf[0] = '\0'; line = buf;
- X if (index(tmp, ',') || index(tmp, ' ') || index(tmp, '\t')) {
- X! for (p = value; *p;) { /* 'value' points to current 'word' */
- X! for (; *p && !index(", \t", *p); p++);
- X! if (*p) {
- X! if (((s = index(p, '(')) || (s = index(p, '<'))) &&
- X! NULL != index(p, ',') && s > index(p, ','))
- X! s = NULL;
- X! if (*value != '(' && *value != '<' && s == NULL) {
- X! *p++ = '\0'; /* this is not a compound address */
- X! } else { /* address has more than one word */
- X! if (*value == '(' || *value == '<')
- X! p = index(value, *value == '(' ? ')' : '>');
- X! else
- X! p = index(value, *s == '(' ? ')' : '>');
- X! if (*p == ' ' || *p == '\t') p++;
- X! for (; *p && !index(", \t", *p); p++);
- X! if (*p) *p++ = '\0';
- X! }
- X! }
- X for (n = 0; aliases[n]; n++) {
- X if (strcmp(value, aliases[n]->name) == 0) {
- X! de_alias(aliases[n]->alias, buf, &line, otherBuf);
- X break;
- X }
- X }
- X! if (! aliases[n]) /* If not an alias, use the name supplied. */
- X! de_alias(value, buf, &line, otherBuf);
- X! for (; *p && index(", \t", *p); p++);
- X value = p;
- X if (*p) p++;
- X }
- X! } else { /* test single word for aliasing, substituting if matched. */
- X! for (n = 0; aliases[n]; n++) {
- X! if (strcmp(value, aliases[n]->name) == 0) {
- X! de_alias(aliases[n]->alias, buf, &line, otherBuf);
- X break;
- X }
- X+ }
- X+ if (! aliases[n]) /* If not an alias, use the name supplied. */
- X+ de_alias(value, buf, &line, otherBuf);
- X }
- X+ value = buf;
- X }
- X return ((char *)value);
- X } /* alias */
- X
- X /*
- X ** @(#)GetMailEnv() - Get environment value from mail or shell
- X! ** Accommodate the case of trailing blanks on the item.
- X! ** Expand environment variables.
- X */
- X char *
- X GetMailEnv(item)
- X***************
- X*** 210,219 ****
- X value = XtMalloc(length + 1);
- X strncpy(value, s, length);
- X value[length] = '\0';
- X! }
- X }
- X XtFree(mailenv);
- X }
- X return(value);
- X } /* GetMailEnv */
- X
- X--- 311,342 ----
- X value = XtMalloc(length + 1);
- X strncpy(value, s, length);
- X value[length] = '\0';
- X! }
- X }
- X XtFree(mailenv);
- X }
- X+ /*
- X+ * Expand shell variables in value
- X+ */
- X+ if (value) {
- X+ char *v, *e, *nvalue;
- X+ while (s = index(value, '$')) {
- X+ for (c = s + 1; *c && !index(" \t\n$/\"\'", *c); c++);
- X+ length = c - s - 1;
- X+ strncpy(buf, s + 1, length);
- X+ buf[length] = '\0';
- X+ if (!(e = getenv(buf)))
- X+ e = "";
- X+ if (nvalue = XtMalloc(strlen(value) - length + strlen(c) + 2)) {
- X+ for (c = nvalue, v = value; v != s; *c++ = *v++);
- X+ for (s = e; *s; *c++ = *s++);
- X+ for (v += length + 1; *v; *c++ = *v++);
- X+ *c = '\0';
- X+ XtFree(value);
- X+ value = nvalue;
- X+ }
- X+ }
- X+ }
- X return(value);
- X } /* GetMailEnv */
- X
- X***************
- X*** 245,277 ****
- X char *item;
- X {
- X FILE *fp;
- X! char *s = NULL;
- X char buf[BUFSIZ];
- X
- X
- X if ((fp = fopen(mailrcFile(), "r")) != NULL) {
- X while (s = fgets(buf, BUFSIZ, fp)) {
- X! if (strncmp(buf, "set", 3) == 0) { /* if this is a 'set' record */
- X! s = &buf[3]; /* starting just beyond the 'set'... */
- X while (*s) { /* there may be multiple assignments */
- X! for (; *s && (*s == ' ' || *s == '\t' || *s == '\n'); s++);
- X if (*s) {
- X! if (strncmp(s, item, strlen(item)) == 0)
- X break;
- X }
- X! for (; *s && *s != ' ' && *s != '\t' && *s != '\n'; s++);
- X }
- X if (*s) { /* we have found a match */
- X! s = s + strlen(item); /* look for a value to it */
- X if (*s++ != '=') { /* variable only, no value */
- X! s = XtNewString("True"); /* return a boolean string */
- X } else {
- X if (*s == '\"') /* if surrounded by quotes */
- X! buf[strlen(buf) - 2] = '\0';
- X! else {
- X! buf[strlen(buf) - 1] = '\0';
- X! --s;
- X! }
- X strcpy(buf, ++s);
- X s = XtNewString(buf);
- X }
- X--- 368,405 ----
- X char *item;
- X {
- X FILE *fp;
- X! char *c, *s = NULL;
- X char buf[BUFSIZ];
- X+ int negate = strncmp(item, "no", 2) == 0 ? 1 : 0;
- X+ int size = strlen(item) - 2 * negate;
- X+ int unset;
- X
- X
- X if ((fp = fopen(mailrcFile(), "r")) != NULL) {
- X while (s = fgets(buf, BUFSIZ, fp)) {
- X! if (strncmp(buf, "set", 3) == 0 || /* if this is a 'set' record */
- X! strncmp(buf, "unset", 5) == 0) { /* or this an 'unset' record */
- X! unset = (buf[0] == 'u') ? 1 : 0;
- X! s = &buf[(unset?5:3)]; /* starting just beyond the 'set'... */
- X while (*s) { /* there may be multiple assignments */
- X! for (; *s && index(" \t\n", *s); s++);
- X if (*s) {
- X! if (strncmp(s, item, size) == 0) break;
- X! if (unset && negate && strncmp(s, &item[2], size) == 0)
- X break;
- X }
- X! for (; *s && !index(" \t\n", *s); s++);
- X }
- X if (*s) { /* we have found a match */
- X! s = s + size; /* look for a value to it */
- X if (*s++ != '=') { /* variable only, no value */
- X! s = (unset && ! negate) ? NULL : XtNewString("True");
- X } else {
- X if (*s == '\"') /* if surrounded by quotes */
- X! for (c = s + 1; *c && *c != '\"'; c++);
- X! else
- X! for (c = s--; *c && !index(" \t\n", *c); c++);
- X! *c = '\0';
- X strcpy(buf, ++s);
- X s = XtNewString(buf);
- X }
- X*** ../v1.1/global.h Mon Jun 4 09:48:38 1990
- X--- global.h Mon Aug 27 11:09:19 1990
- X***************
- X*** 32,38 ****
- X * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
- X * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- X * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- X! * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- X * PERFORMANCE OF THIS SOFTWARE.
- X *
- X * Author: Michael C. Wagnitz - National Semiconductor Corporation
- X--- 32,38 ----
- X * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
- X * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- X * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- X! * OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- X * PERFORMANCE OF THIS SOFTWARE.
- X *
- X * Author: Michael C. Wagnitz - National Semiconductor Corporation
- X***************
- X*** 64,69 ****
- X--- 64,70 ----
- X extern String Status_Help_Text;
- X extern String Subject_Help_Text;
- X extern String Text_Help_Text;
- X+ extern String Text2_Help_Text;
- X extern String Title_Help_Text;
- X extern String To_Help_Text;
- X
- X***************
- X*** 85,90 ****
- X--- 86,92 ----
- X extern XtActionProc MyNotify(); /* invokes callbacks w/ param */
- X extern XtActionProc NextField(); /* warps pointer to data fld */
- X extern XtActionProc PrintMsg(); /* send mail to the printer */
- X+ extern XtActionProc SavePos(); /* save widget insert point */
- X extern XtActionProc SetAliases(); /* menu list of alias names */
- X extern XtActionProc SetCursor(); /* change between wait & norm */
- X extern XtActionProc SetDirectory(); /* create folder files list */
- X***************
- X*** 92,111 ****
- X extern XtActionProc SetHelp(); /* Position help popup text */
- X extern XtActionProc SetMenu(); /* Position set_menu popup */
- X extern XtActionProc SetPopup(); /* Position relative to owner */
- X extern XtActionProc SetSelect(); /* reposition select mark */
- X extern XtActionProc Quit(); /* termination procedure */
- X
- X /* callbacks.c */
- X
- X! extern XtCallbackProc Autograph(); /* Adds Signature to message */
- X! extern XtCallbackProc Done(); /* Completes mail delivery */
- X extern XtCallbackProc DoIt(); /* callback do specified cmd */
- X extern XtCallbackProc DoPrint(); /* callback printer execution */
- X extern XtCallbackProc DoQuit(); /* callback termination func */
- X extern XtCallbackProc DoSet(); /* callback to toggle options */
- X extern XtCallbackProc DoWith(); /* do cmd with arguments */
- X extern XtCallbackProc GetAliasName(); /* retrieve alias name */
- X extern XtCallbackProc GetFolderName(); /* retrieve folder name */
- X extern XtCallbackProc Reply(); /* use msg author and subject */
- X extern XtCallbackProc Save(); /* callback save routine */
- X extern XtCallbackProc SetNewmail(); /* highlight when new mail */
- X--- 94,116 ----
- X extern XtActionProc SetHelp(); /* Position help popup text */
- X extern XtActionProc SetMenu(); /* Position set_menu popup */
- X extern XtActionProc SetPopup(); /* Position relative to owner */
- X+ extern XtActionProc SetPos(); /* reset widget insert point */
- X extern XtActionProc SetSelect(); /* reposition select mark */
- X extern XtActionProc Quit(); /* termination procedure */
- X
- X /* callbacks.c */
- X
- X! extern XtCallbackProc Autograph(); /* adds Signature to message */
- X! extern XtCallbackProc Done(); /* completes mail delivery */
- X extern XtCallbackProc DoIt(); /* callback do specified cmd */
- X extern XtCallbackProc DoPrint(); /* callback printer execution */
- X extern XtCallbackProc DoQuit(); /* callback termination func */
- X extern XtCallbackProc DoSet(); /* callback to toggle options */
- X extern XtCallbackProc DoWith(); /* do cmd with arguments */
- X+ extern XtCallbackProc DropIt(); /* destroy Folder popup list */
- X extern XtCallbackProc GetAliasName(); /* retrieve alias name */
- X extern XtCallbackProc GetFolderName(); /* retrieve folder name */
- X+ extern XtCallbackProc ReEdit(); /* re-edit the mail message */
- X extern XtCallbackProc Reply(); /* use msg author and subject */
- X extern XtCallbackProc Save(); /* callback save routine */
- X extern XtCallbackProc SetNewmail(); /* highlight when new mail */
- X***************
- X*** 115,120 ****
- X--- 120,129 ----
- X
- X extern void callMail(); /* fork child, exec mail */
- X
- X+ /* confirm.c */
- X+
- X+ extern Bool Confirm(); /* Confirm destructive acts */
- X+
- X /* environs.c */
- X
- X extern char *GetMailEnv(); /* get value from mail env */
- X***************
- X*** 129,141 ****
- X
- X /* mail.c */
- X
- X extern XtInputCallbackProc readMail(); /* get data from mail */
- X- extern void writeMail(); /* send data to mail */
- X extern void sendMail(); /* used by Send/Reply cmds */
- X
- X /* parser.c */
- X
- X extern void parser_init(); /* compile patterns */
- X extern void parse(); /* parse mail output */
- X extern char *QueryMail(); /* ask mail for info */
- X
- X--- 138,152 ----
- X
- X /* mail.c */
- X
- X+ extern void editMail(); /* create/compose a message */
- X extern XtInputCallbackProc readMail(); /* get data from mail */
- X extern void sendMail(); /* used by Send/Reply cmds */
- X+ extern void writeMail(); /* send data to mail */
- X
- X /* parser.c */
- X
- X extern void parser_init(); /* compile patterns */
- X+ extern int match(); /* eval command or output */
- X extern void parse(); /* parse mail output */
- X extern char *QueryMail(); /* ask mail for info */
- X
- X***************
- X*** 166,171 ****
- X--- 177,183 ----
- X extern void CreateTextWindow(); /* another text window */
- X extern void CreateTitleBar(); /* a text output window */
- X extern Widget CreateInputWindow(); /* To, Subject, Cc, and Bcc */
- X+ extern void ParseIconGeometry(); /* Parse icon geometry */
- X
- X /* xmail.c */
- X
- X***************
- X*** 172,177 ****
- X--- 184,193 ----
- X extern void initialize(); /* main initialization code */
- X extern char **mailoptions(); /* sets up call to mail pgm */
- X
- X+ /* extern functions */
- X+
- X+ extern char *index(), *rindex();
- X+
- X /* extern variables */
- X
- X extern char *IndexBuf; /* buffer for index widget */
- X***************
- X*** 184,190 ****
- X extern char BccBuf[BUFSIZ]; /* message Bcc list */
- X extern char tmpName[BUFSIZ]; /* message temporary filename */
- X extern char *MailPrompt; /* mail program prompt string */
- X! extern char *HelpNames[24]; /* array of help window names */
- X extern char **mailargv; /* array passed to mail child */
- X
- X extern Pixmap hatch; /* cross_weave, used for Newmail */
- X--- 200,206 ----
- X extern char BccBuf[BUFSIZ]; /* message Bcc list */
- X extern char tmpName[BUFSIZ]; /* message temporary filename */
- X extern char *MailPrompt; /* mail program prompt string */
- X! extern char *HelpNames[25]; /* array of help window names */
- X extern char **mailargv; /* array passed to mail child */
- X
- X extern Pixmap hatch; /* cross_weave, used for Newmail */
- X***************
- X*** 194,200 ****
- X
- X extern AliasRecPtr *aliases; /* array of mail alias strings */
- X extern XmailResources XMail; /* XMail application resources */
- X! extern XtTextSource HelpStrings[23];
- X extern XFontStruct *TextFontStr, *HelpFontStr;
- X
- X extern int mail_fd; /* descriptor to mail process i/o */
- X--- 210,216 ----
- X
- X extern AliasRecPtr *aliases; /* array of mail alias strings */
- X extern XmailResources XMail; /* XMail application resources */
- X! extern XtTextSource HelpStrings[24];
- X extern XFontStruct *TextFontStr, *HelpFontStr;
- X
- X extern int mail_fd; /* descriptor to mail process i/o */
- X*** ../v1.1/handler.c Mon Jun 4 09:48:39 1990
- X--- handler.c Mon Aug 27 11:09:19 1990
- X***************
- X*** 32,38 ****
- X * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
- X * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- X * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- X! * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- X * PERFORMANCE OF THIS SOFTWARE.
- X *
- X * The following software modules were created and are Copyrighted by National
- X--- 32,38 ----
- X * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
- X * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- X * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- X! * OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- X * PERFORMANCE OF THIS SOFTWARE.
- X *
- X * The following software modules were created and are Copyrighted by National
- X***************
- X*** 53,68 ****
- X #include "xmailregex.h"
- X #include "MailwatchP.h"
- X
- X! #if XtSpecificationRelease >= 4
- X! #include <X11/Xaw/LabelP.h> /* R4 */
- X! #else
- X #include <X11/LabelP.h> /* R3 */
- X #endif
- X
- X /*
- X! ** This is unwise, because it depends on a Label Widget's private parts.
- X! ** Examine the current value of the titleBar label and return true/false
- X! ** does it match the system mail folder name?
- X */
- X int
- X In_System_Folder(w)
- X--- 53,67 ----
- X #include "xmailregex.h"
- X #include "MailwatchP.h"
- X
- X! #if XtSpecificationRelease < 4
- X #include <X11/LabelP.h> /* R3 */
- X+ #else
- X+ #include <X11/Xaw/LabelP.h> /* R4 */
- X #endif
- X
- X /*
- X! ** Examine the current value of the titleBar label and return TRUE/FALSE
- X! ** to the question "Does it match the system mail folder name?"
- X */
- X int
- X In_System_Folder(w)
- X***************
- X*** 69,80 ****
- X Widget w;
- X {
- X int result;
- X! char *cp, *index(), *rindex(), buf[BUFSIZ];
- X MailwatchWidget mb = (MailwatchWidget) WidgetOf(w, "mailbox");
- X LabelWidget tb = (LabelWidget) WidgetOf(WidgetOf(WidgetOf(toplevel,
- X "topBox"), "titleBar"), "titleBar");
- X
- X! strcpy(buf, tb->label.label); /* XtGetValues didn't work in R3 */
- X if ((cp = rindex(buf, '"')) == NULL) result = FALSE;
- X else { /* if a current folder name exists */
- X *cp = NULL; /* chop off the rest of the label */
- X--- 68,83 ----
- X Widget w;
- X {
- X int result;
- X! char *cp, buf[BUFSIZ];
- X! Arg args[1];
- X MailwatchWidget mb = (MailwatchWidget) WidgetOf(w, "mailbox");
- X LabelWidget tb = (LabelWidget) WidgetOf(WidgetOf(WidgetOf(toplevel,
- X "topBox"), "titleBar"), "titleBar");
- X
- X! XtSetArg(args[0], XtNlabel, (XtArgVal) NULL);
- X! XtGetValues(tb, args, ONE);
- X! strcpy(buf, (char *)args[0].value);
- X!
- X if ((cp = rindex(buf, '"')) == NULL) result = FALSE;
- X else { /* if a current folder name exists */
- X *cp = NULL; /* chop off the rest of the label */
- X***************
- X*** 160,166 ****
- X int msg_num;
- X int undeleting;
- X {
- X! char *c, *s, *index();
- X Arg args[2];
- X Cardinal j, k;
- X Widget iw;
- X--- 163,169 ----
- X int msg_num;
- X int undeleting;
- X {
- X! char *c, *s;
- X Arg args[2];
- X Cardinal j, k;
- X Widget iw;
- X***************
- X*** 225,231 ****
- X file_handler(show_latest)
- X int show_latest;
- X {
- X! char *c, *s, *p, *index(), msgnum_str[10];
- X int more_than_one, msg_num = 0; /* zero means no message */
- X Widget iw = WidgetOf(WidgetOf(toplevel, "topBox"), "indexWindow");
- X
- X--- 228,234 ----
- X file_handler(show_latest)
- X int show_latest;
- X {
- X! char *c, *s, *p, msgnum_str[10];
- X int more_than_one, msg_num = 0; /* zero means no message */
- X Widget iw = WidgetOf(WidgetOf(toplevel, "topBox"), "indexWindow");
- X
- X*** ../v1.1/icon.mail Mon Jun 4 09:46:36 1990
- X--- icon.mail Mon Aug 27 11:09:19 1990
- X***************
- X*** 29,64 ****
- X #define mail_height 56
- X
- X static char mail_bits[] = {
- X! 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
- X! 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00,
- X! 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00,
- X! 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
- X! 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
- X! 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0x00, 0x00, 0x00, 0x00,
- X! 0x00, 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x30, 0x03, 0x00,
- X! 0x00, 0x00, 0x00, 0x07, 0x30, 0x06, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30,
- X! 0x06, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x30, 0x07, 0x00, 0x00, 0x00, 0xe0,
- X! 0x1f, 0xb0, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0xf0, 0x06, 0x00, 0x00,
- X! 0x00, 0xb8, 0xee, 0x70, 0x06, 0x00, 0x00, 0x00, 0x5c, 0xd7, 0x31, 0x06,
- X! 0x00, 0x00, 0x00, 0xae, 0xae, 0x39, 0x06, 0x00, 0x00, 0x00, 0x56, 0x5d,
- X! 0x3f, 0x06, 0x00, 0x00, 0x00, 0x8a, 0xb4, 0x37, 0x06, 0x00, 0x00, 0x00,
- X! 0x46, 0x64, 0x33, 0x06, 0x00, 0x00, 0x00, 0x22, 0xc4, 0x33, 0x06, 0x00,
- X! 0x00, 0x00, 0x12, 0x84, 0x33, 0x06, 0x00, 0x00, 0x00, 0x0a, 0x04, 0x33,
- X! 0x06, 0x00, 0xff, 0xff, 0xfa, 0x07, 0x33, 0xf6, 0xff, 0x00, 0x00, 0x0a,
- X! 0x00, 0x33, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x03, 0x03, 0x00, 0x00,
- X! 0x00, 0x3a, 0x80, 0x83, 0x01, 0x00, 0x00, 0x00, 0x7a, 0x40, 0xc3, 0x00,
- X! 0x00, 0x00, 0x00, 0xfa, 0xa0, 0x63, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x51,
- X! 0x33, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x0b, 0x3b, 0x00, 0x00, 0x00, 0x00,
- X! 0x3a, 0x06, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x37, 0x00, 0x00,
- X! 0x00, 0x00, 0x0a, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x31,
- X! 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x31, 0x00, 0x00, 0x00, 0x00, 0x02,
- X! 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x6a, 0x31, 0x00, 0x00, 0x00,
- X! 0x00, 0xaa, 0x2b, 0x31, 0x00, 0x00, 0x00, 0x00, 0xba, 0x2a, 0x31, 0x00,
- X! 0x00, 0x00, 0x00, 0x2a, 0x29, 0x31, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
- X! 0x31, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00,
- X! 0x52, 0x15, 0x31, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x2a, 0x31, 0x00, 0x00,
- X! 0xee, 0x28, 0x82, 0x02, 0x31, 0x20, 0x11, 0x88, 0x22, 0x12, 0x11, 0x2d,
- X! 0x29, 0x00, 0x29, 0xc8, 0xa2, 0x0b, 0xad, 0x40, 0x9a, 0xc4, 0x4a, 0xc6,
- X! 0x86, 0x87, 0x4e, 0x1a, 0xcb, 0x67, 0x07, 0xc2, 0x7e, 0xee, 0x3f, 0xbf,
- X! 0xdc, 0x8e, 0xc7, 0xd2, 0x33, 0xa5, 0x2a, 0x8f, 0x1d, 0x63, 0x72, 0xb9,
- X! 0x7b, 0xfd, 0x72, 0xf9, 0x7f, 0x4e, 0xe7, 0xd4 };
- X--- 29,64 ----
- X #define mail_height 56
- X
- X static char mail_bits[] = {
- X! 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
- X! 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00,
- X! 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00,
- X! 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00,
- X! 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
- X! 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0x00, 0x00, 0x00, 0x00,
- X! 0x00, 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x30, 0x03, 0x00,
- X! 0x00, 0x00, 0x00, 0x07, 0x30, 0x06, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30,
- X! 0x06, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x30, 0x07, 0x00, 0x00, 0x00, 0xe0,
- X! 0x1f, 0xb0, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0xf0, 0x06, 0x00, 0x00,
- X! 0x00, 0xb8, 0xee, 0x70, 0x06, 0x00, 0x00, 0x00, 0x5c, 0xd7, 0x31, 0x06,
- X! 0x00, 0x00, 0x00, 0xae, 0xae, 0x39, 0x06, 0x00, 0x00, 0x00, 0x56, 0x5d,
- X! 0x3f, 0x06, 0x00, 0x00, 0x00, 0x8a, 0xb4, 0x37, 0x06, 0x00, 0x00, 0x00,
- X! 0x46, 0x64, 0x33, 0x06, 0x00, 0x00, 0x00, 0x22, 0xc4, 0x33, 0x06, 0x00,
- X! 0x00, 0x00, 0x12, 0x84, 0x33, 0x06, 0x00, 0x00, 0x00, 0x0a, 0x04, 0x33,
- X! 0x06, 0x00, 0x00, 0x00, 0xfa, 0x07, 0x33, 0x06, 0x00, 0x00, 0x00, 0x0a,
- X! 0x00, 0x33, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x03, 0x03, 0x00, 0x00,
- X! 0x00, 0x3a, 0x80, 0x83, 0x01, 0x00, 0x00, 0x00, 0x7a, 0x40, 0xc3, 0x00,
- X! 0x00, 0x00, 0x00, 0xfa, 0xa0, 0x63, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x51,
- X! 0x33, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x0b, 0x1b, 0x00, 0x00, 0x00, 0x00,
- X! 0x3a, 0x06, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x1f, 0x00, 0x00,
- X! 0x00, 0x00, 0x0a, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x19,
- X! 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x19, 0x00, 0x00, 0x00, 0x00, 0x02,
- X! 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x6a, 0x19, 0x00, 0x00, 0x00,
- X! 0x00, 0xaa, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00, 0xba, 0x2a, 0x19, 0x00,
- X! 0x00, 0x00, 0x00, 0x2a, 0x29, 0x19, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
- X! 0x19, 0x00, 0x80, 0x85, 0xd8, 0x02, 0x00, 0x99, 0x02, 0x40, 0xc5, 0x92,
- X! 0x52, 0x15, 0x59, 0x46, 0x42, 0x69, 0xb2, 0xaa, 0x2a, 0xb9, 0x44, 0xc6,
- X! 0xee, 0xaa, 0x82, 0x02, 0x79, 0x64, 0xb5, 0x8a, 0x22, 0x12, 0x11, 0xad,
- X! 0xa9, 0x10, 0x29, 0xc8, 0xa2, 0x0b, 0xad, 0xc0, 0xba, 0xc4, 0x4a, 0xc6,
- X! 0x86, 0x87, 0x4e, 0x5a, 0xdb, 0x67, 0x07, 0xc2, 0x7e, 0xee, 0x3f, 0xb7,
- X! 0xdc, 0x8e, 0xc7, 0xd2, 0x33, 0xa5, 0x2a, 0x8f, 0x1d, 0x63, 0x72, 0xb9,
- X! 0x7b, 0xfd, 0x72, 0xf9, 0x7f, 0x4e, 0xe7, 0xd4};
- X*** ../v1.1/icon.nomail Mon Jun 4 09:46:41 1990
- X--- icon.nomail Mon Aug 27 11:09:20 1990
- X***************
- X*** 29,64 ****
- X #define no_mail_height 56
- X
- X static char no_mail_bits[] = {
- X! 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X! 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X! 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X! 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X! 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
- X! 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x00,
- X! 0x00, 0x18, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x04,
- X! 0x00, 0x00, 0x00, 0x07, 0x00, 0x06, 0x06, 0x00, 0x00, 0x80, 0x01, 0x00,
- X! 0x06, 0x07, 0x00, 0x00, 0xc0, 0x1c, 0x00, 0x87, 0x07, 0x00, 0x00, 0xe0,
- X! 0x1f, 0x80, 0xc7, 0x07, 0x00, 0x00, 0xf0, 0x3f, 0xc0, 0xe6, 0x07, 0x00,
- X! 0x00, 0xf8, 0xe2, 0x60, 0x76, 0x07, 0x00, 0x00, 0x9c, 0xce, 0x31, 0x3e,
- X! 0x03, 0x00, 0x00, 0x8e, 0x86, 0x19, 0x1e, 0x01, 0x00, 0x00, 0x86, 0x03,
- X! 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00,
- X! 0xc2, 0x06, 0x83, 0x07, 0x00, 0x00, 0x00, 0xa2, 0x0b, 0xc3, 0x07, 0x00,
- X! 0x00, 0x00, 0x12, 0x11, 0xe3, 0x06, 0x00, 0x00, 0x00, 0x82, 0x02, 0x73,
- X! 0x06, 0x00, 0xff, 0xff, 0xaa, 0x2a, 0x33, 0xf6, 0xff, 0x00, 0x00, 0x52,
- X! 0x15, 0x13, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x03, 0x00, 0x00,
- X! 0x00, 0x02, 0x00, 0x83, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x29, 0xc3, 0x00,
- X! 0x00, 0x00, 0x00, 0xba, 0x2a, 0x63, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x2b,
- X! 0x33, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x6a, 0x3b, 0x00, 0x00, 0x00, 0x00,
- X! 0x02, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00,
- X! 0x00, 0x00, 0xfe, 0xff, 0x33, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x31,
- X! 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x60,
- X! 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x30, 0x00, 0x00, 0x00,
- X! 0x00, 0x60, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x30, 0x00,
- X! 0x00, 0x00, 0x00, 0x60, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60,
- X! 0x30, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00,
- X! 0x60, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x30, 0x00, 0x00,
- X! 0xee, 0x28, 0x68, 0x60, 0x3a, 0x21, 0x11, 0x88, 0x22, 0x76, 0x60, 0x2c,
- X! 0x29, 0x00, 0x29, 0xc8, 0x76, 0x60, 0xaf, 0x40, 0x9a, 0xc4, 0x4a, 0x72,
- X! 0xe0, 0x87, 0x4e, 0x1a, 0xcb, 0x67, 0x7b, 0xe2, 0x7c, 0xee, 0x3f, 0xbf,
- X! 0xdc, 0x66, 0xe9, 0xd2, 0x33, 0xa5, 0x2a, 0x8f, 0x6d, 0xba, 0x73, 0xb9,
- X! 0x7b, 0xfd, 0x72, 0x9b, 0xda, 0x4e, 0xe7, 0xd4 };
- X--- 29,64 ----
- X #define no_mail_height 56
- X
- X static char no_mail_bits[] = {
- X! 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X! 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X! 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X! 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- X! 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
- X! 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x00,
- X! 0x00, 0x18, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x04,
- X! 0x00, 0x00, 0x00, 0x07, 0x00, 0x06, 0x06, 0x00, 0x00, 0x80, 0x01, 0x00,
- X! 0x06, 0x07, 0x00, 0x00, 0xc0, 0x1c, 0x00, 0x87, 0x07, 0x00, 0x00, 0xe0,
- X! 0x1f, 0x80, 0xc7, 0x07, 0x00, 0x00, 0xf0, 0x3f, 0xc0, 0xe6, 0x07, 0x00,
- X! 0x00, 0xf8, 0xe2, 0x60, 0x76, 0x07, 0x00, 0x00, 0x9c, 0xce, 0x31, 0x3e,
- X! 0x03, 0x00, 0x00, 0x8e, 0x86, 0x19, 0x1e, 0x01, 0x00, 0x00, 0x86, 0x03,
- X! 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00,
- X! 0xc2, 0x06, 0x83, 0x07, 0x00, 0x00, 0x00, 0xa2, 0x0b, 0xc3, 0x07, 0x00,
- X! 0x00, 0x00, 0x12, 0x11, 0xe3, 0x06, 0x00, 0x00, 0x00, 0x82, 0x02, 0x73,
- X! 0x06, 0x00, 0x00, 0x00, 0xaa, 0x2a, 0x33, 0x06, 0x00, 0x00, 0x00, 0x52,
- X! 0x15, 0x13, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x03, 0x00, 0x00,
- X! 0x00, 0x02, 0x00, 0x83, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x29, 0xc3, 0x00,
- X! 0x00, 0x00, 0x00, 0xba, 0x2a, 0x63, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x2b,
- X! 0x33, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x6a, 0x1b, 0x00, 0x00, 0x00, 0x00,
- X! 0x02, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x00,
- X! 0x00, 0x00, 0xfe, 0xff, 0x1b, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x19,
- X! 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, 0xc0,
- X! 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x18, 0x00, 0x00, 0x00,
- X! 0x00, 0xc0, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x18, 0x00,
- X! 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0,
- X! 0x18, 0x00, 0x80, 0x85, 0xd8, 0xca, 0xc0, 0x98, 0x02, 0x40, 0xc5, 0x92,
- X! 0xca, 0xc0, 0x58, 0x46, 0x42, 0x69, 0xb2, 0xe4, 0xc0, 0xb8, 0x44, 0xc6,
- X! 0xee, 0xaa, 0xe8, 0xc0, 0x78, 0x64, 0xb5, 0x8a, 0x22, 0xd6, 0xc0, 0xac,
- X! 0xa9, 0x10, 0x29, 0xc8, 0xd6, 0xd5, 0xaf, 0xc0, 0xba, 0xc4, 0x4a, 0xd2,
- X! 0xe9, 0x87, 0x4e, 0x5a, 0xdb, 0x67, 0xfb, 0xca, 0x7c, 0xee, 0x3f, 0xb7,
- X! 0xdc, 0xe6, 0xe9, 0xd2, 0x33, 0xa5, 0x2a, 0x8f, 0xed, 0xba, 0x73, 0xb9,
- X! 0x7b, 0xfd, 0x72, 0x9b, 0xda, 0x4e, 0xe7, 0xd4};
- X*** ../v1.1/mail.c Mon Jun 4 09:48:39 1990
- X--- mail.c Mon Aug 27 11:09:20 1990
- X***************
- X*** 32,59 ****
- X * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
- X * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- X * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- X! * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- X * PERFORMANCE OF THIS SOFTWARE.
- X *
- X * The following software modules were created and are Copyrighted by National
- X * Semiconductor Corporation:
- X *
- X! * 1. sendMail:
- X *
- X * Author: Michael C. Wagnitz - National Semiconductor Corporation
- X *
- X */
- X-
- X-
- X #include "global.h"
- X
- X #ifndef DEFAULT_VISUAL
- X #define DEFAULT_VISUAL "/usr/ucb/vi"
- X #endif
- X
- X /*
- X! ** @(#)readMail() - callback invoked everytime input is pending on mail fd
- X **
- X ** Calls QueryMail() to read all available data from mail file descriptor,
- X ** and passes output to parse() for analysis and appropriate action.
- X */
- X--- 32,133 ----
- X * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
- X * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- X * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- X! * OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- X * PERFORMANCE OF THIS SOFTWARE.
- X *
- X * The following software modules were created and are Copyrighted by National
- X * Semiconductor Corporation:
- X *
- X! * 1. editMail:
- X! * 2. sendMail:
- X *
- X * Author: Michael C. Wagnitz - National Semiconductor Corporation
- X *
- X */
- X #include "global.h"
- X+ #include <sys/wait.h>
- X+ #include <sys/stat.h>
- X
- X #ifndef DEFAULT_VISUAL
- X #define DEFAULT_VISUAL "/usr/ucb/vi"
- X #endif
- X
- X+
- X /*
- X! ** @(#)editMail() - edit a mail message using the preferred editor
- X **
- X+ ** Try to accommodate those editors (emacs, xedit,...) which start their own
- X+ ** windows in X11. We know for a fact that vi and ed do not. We assume (for
- X+ ** now) that any other editor selection does.
- X+ */
- X+ void
- X+ editMail()
- X+ {
- X+ Display *ad;
- X+ char *Argv[11], *Editor, *pgm;
- X+ char cmd[BUFSIZ];
- X+ int ed_or_vi, editor_pid;
- X+ union wait status;
- X+
- X+
- X+ ad = XtDisplay(WidgetOf(WidgetOf(toplevel, "topBox"), "statusWindow"));
- X+
- X+ if ((Editor = GetMailEnv("VISUAL")) == NULL)
- X+ Editor = XtNewString(DEFAULT_VISUAL);
- X+
- X+ if ((pgm = rindex(Editor, '/')) == NULL) pgm = Editor;
- X+ else ++pgm;
- X+
- X+ ed_or_vi = (strcmp(pgm, "ed") == 0 || strcmp(pgm, "vi") == 0) ? 1 : 0;
- X+
- X+ editor_pid = fork();
- X+ switch (editor_pid) {
- X+ case -1: /* fork failed ... revert to a system call */
- X+ if (ed_or_vi)
- X+ sprintf(cmd, "xterm -display %s -name XMail \
- X+ -title \"xmail message entry\" -e %s %s",
- X+ ad->display_name, Editor, tmpName);
- X+ else
- X+ sprintf(cmd, "%s -display %s -name XMail \
- X+ -title \"xmail message entry\" %s",
- X+ Editor, ad->display_name, tmpName);
- X+
- X+ system(cmd);
- X+ break;
- X+ case 0: /* child starts the message entry session */
- X+ Argv[0] = (ed_or_vi) ? "/usr/bin/X11/xterm" : Editor;
- X+ Argv[1] = "-display";
- X+ Argv[2] = ad->display_name;
- X+ Argv[3] = "-name";
- X+ Argv[4] = "XMail";
- X+ Argv[5] = "-title";
- X+ Argv[6] = "xmail message entry";
- X+ if (ed_or_vi) {
- X+ Argv[7] = "-e";
- X+ Argv[8] = Editor;
- X+ Argv[9] = tmpName;
- X+ Argv[10] = NULL;
- X+ } else {
- X+ Argv[7] = tmpName;
- X+ Argv[8] = NULL;
- X+ }
- X+ execvp(Argv[0], Argv);
- X+ perror("editMail: Failed to start editor");
- X+ _exit();
- X+ break;
- X+ default: /* wait for child to finish before continuing */
- X+ while (wait3(&status, WNOHANG, NULL) != editor_pid)
- X+ ProcessOneEvent(XtDisplay(toplevel));
- X+ break;
- X+ }
- X+
- X+ XtFree(Editor);
- X+ } /* editMail */
- X+
- X+
- X+ /*
- X+ ** @(#)readMail() - callback invoked every time input is pending on mail fd
- X+ **
- X ** Calls QueryMail() to read all available data from mail file descriptor,
- X ** and passes output to parse() for analysis and appropriate action.
- X */
- X***************
- X*** 68,104 ****
- X
- X
- X /*
- X- ** @(#)writeMail() - Write s to mail, and flush the output.
- X- */
- X- void
- X- writeMail(s)
- X- char *s;
- X- {
- X- write(mail_fd, s, strlen(s));
- X- } /* writeMail */
- X-
- X-
- X- /*
- X ** @(#)sendMail() - send a mail message to the indicated recipient(s)
- X */
- X /* ARGSUSED */
- X void
- X sendMail(parent)
- X! Widget parent;
- X {
- X! Arg args[10];
- X! Display *ad;
- X! Widget Popup, Layout;
- X! Widget lab1, lab2, lab3, lab4;
- X! Widget To, Subject, Cclist, Bcc, Last;
- X! Window aw, dumy;
- X! String Editor, pgm;
- X! menuList_p *list;
- X! menuList b1, b2, b3;
- X! char *rindex(), cmd[BUFSIZ];
- X! int x, y, scn;
- X
- X
- X aw = XtWindow(WidgetOf(WidgetOf(toplevel, "topBox"), "statusWindow"));
- X ad = XtDisplay(WidgetOf(WidgetOf(toplevel, "topBox"), "statusWindow"));
- X scn = DefaultScreen(ad);
- X--- 142,167 ----
- X
- X
- X /*
- X ** @(#)sendMail() - send a mail message to the indicated recipient(s)
- X */
- X /* ARGSUSED */
- X void
- X sendMail(parent)
- X! Widget parent;
- X {
- X! Arg args[10];
- X! Display *ad;
- X! Widget Popup, Layout;
- X! Widget lab1, lab2, lab3, lab4;
- X! Widget To, Subject, Cclist, Bcc, Last;
- X! Window aw, dumy;
- X! menuList_p *list;
- X! menuList b1, b2, b3, b4;
- X! int x, y, scn;
- X
- X
- X+ editMail();
- X+
- X aw = XtWindow(WidgetOf(WidgetOf(toplevel, "topBox"), "statusWindow"));
- X ad = XtDisplay(WidgetOf(WidgetOf(toplevel, "topBox"), "statusWindow"));
- X scn = DefaultScreen(ad);
- X***************
- X*** 207,222 ****
- X b1.label = "Deliver the message";
- X b1.func = (XtCallbackProc) Done;
- X b1.data = "Deliver";
- X! b2.label = "Cancel message and delete";
- X! b2.func = (XtCallbackProc) Done;
- X! b2.data = "Cancel";
- X b3.label = "Cancel, save in DEAD folder";
- X b3.func = (XtCallbackProc) Done;
- X b3.data = "cancel";
- X! list[0] = &b1; list[1] = &b2; list[2] = &b3; list[3] = NULL;
- X
- X AddMenuWindow(Last, "Deliver", "DoDone", list);
- X
- X AddHelpText(Last, "Deliver", Deliver_Help_Text);
- X
- X Normalize(To);
- X--- 270,289 ----
- X b1.label = "Deliver the message";
- X b1.func = (XtCallbackProc) Done;
- X b1.data = "Deliver";
- X! b2.label = "Re-edit the message";
- X! b2.func = (XtCallbackProc) ReEdit;
- X! b2.data = "ReEdit";
- X b3.label = "Cancel, save in DEAD folder";
- X b3.func = (XtCallbackProc) Done;
- X b3.data = "cancel";
- X! b4.label = "Cancel message and delete";
- X! b4.func = (XtCallbackProc) Done;
- X! b4.data = "Cancel";
- X! list[0] = &b1; list[1] = &b2; list[2] = &b3; list[3] = &b4; list[4] = NULL;
- X
- X AddMenuWindow(Last, "Deliver", "DoDone", list);
- X
- X+ XtFree(list);
- X AddHelpText(Last, "Deliver", Deliver_Help_Text);
- X
- X Normalize(To);
- X***************
- X*** 224,245 ****
- X Normalize(Cclist);
- X Normalize(Bcc);
- X
- X- XtFree(list);
- X-
- X- if ((Editor = GetMailEnv("VISUAL")) == NULL)
- X- Editor = XtNewString(DEFAULT_VISUAL);
- X-
- X- if ((pgm = rindex(Editor, '/')) == NULL) pgm = Editor;
- X- else ++pgm;
- X-
- X- sprintf(cmd, "xterm -display %s -name \"XMail\" -T \"xmail message entry\" \
- X- -n xmail_%s -e %s %s", ad->display_name, pgm, Editor, tmpName);
- X-
- X- system(cmd);
- X-
- X- XtFree(Editor);
- X-
- X XtPopup(Popup, XtGrabNone);
- X
- X XWarpPointer(XtDisplay(toplevel), None, XtWindow(To), 0, 0, 0, 0, 10, 5);
- X } /* sendMail */
- X--- 291,308 ----
- X Normalize(Cclist);
- X Normalize(Bcc);
- X
- X XtPopup(Popup, XtGrabNone);
- X
- X XWarpPointer(XtDisplay(toplevel), None, XtWindow(To), 0, 0, 0, 0, 10, 5);
- X } /* sendMail */
- X+
- X+
- X+ /*
- X+ ** @(#)writeMail() - Write s to mail, and flush the output.
- X+ */
- X+ void
- X+ writeMail(s)
- X+ char *s;
- X+ {
- X+ write(mail_fd, s, strlen(s));
- X+ } /* writeMail */
- X*** ../v1.1/make.file Mon Jun 4 09:48:40 1990
- X--- make.file Mon Aug 27 11:09:20 1990
- X***************
- X*** 41,46 ****
- X--- 41,47 ----
- X actions.c \
- X callMail.c \
- X callbacks.c \
- X+ confirm.c \
- X directory.c \
- X environs.c \
- X handler.c \
- X***************
- X*** 56,61 ****
- X--- 57,63 ----
- X actions.o \
- X callMail.o \
- X callbacks.o \
- X+ confirm.o \
- X directory.o \
- X environs.o \
- X handler.o \
- X***************
- X*** 92,100 ****
- X # ########### DEPENDENCIES GO HERE ########################
- X #
- X HelpText.o: defs.h global.h
- X! actions.o: defs.h global.h
- X callMail.o: defs.h global.h
- X! callbacks.o: defs.h global.h
- X directory.o: defs.h global.h
- X environs.o: defs.h global.h
- X handler.o: defs.h global.h xmailregex.h
- X--- 94,102 ----
- X # ########### DEPENDENCIES GO HERE ########################
- X #
- X HelpText.o: defs.h global.h
- X! actions.o: defs.h global.h xmailregex.h
- X callMail.o: defs.h global.h
- X! callbacks.o: defs.h global.h xmailregex.h
- X directory.o: defs.h global.h
- X environs.o: defs.h global.h
- X handler.o: defs.h global.h xmailregex.h
- X*** ../v1.1/parser.c Mon Jun 4 09:48:40 1990
- X--- parser.c Mon Aug 27 11:09:21 1990
- X***************
- X*** 32,38 ****
- X * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
- X * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- X * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- X! * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- X * PERFORMANCE OF THIS SOFTWARE.
- X *
- X * Author: Michael C. Wagnitz - National Semiconductor Corporation
- X--- 32,38 ----
- X * EVENT SHALL NATIONAL SEMICONDUCTOR CORPORATION BE LIABLE FOR ANY SPECIAL,
- X * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- X * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- X! * OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- X * PERFORMANCE OF THIS SOFTWARE.
- X *
- X * Author: Michael C. Wagnitz - National Semiconductor Corporation
- X***************
- X*** 39,44 ****
- X--- 39,45 ----
- X *
- X */
- X
- X+ #define PARSER
- X
- X #include "global.h"
- X #include "regex.h"
- X***************
- X*** 80,86 ****
- X ** @(#)match() - string against regular expressions in pattern table.
- X ** The best match is found, and function returns index to the pattern table.
- X */
- X! static int
- X match(patternTable, string)
- X PatternRec *patternTable;
- X char *string;
- X--- 81,87 ----
- X ** @(#)match() - string against regular expressions in pattern table.
- X ** The best match is found, and function returns index to the pattern table.
- X */
- X! int
- X match(patternTable, string)
- X PatternRec *patternTable;
- X char *string;
- X***************
- X*** 123,129 ****
- X XtTextBlock textblock;
- X XtTextPosition pos;
- X Widget button, icon, popup, iw;
- X! char tmp[128], *c, *index();
- X int num;
- X static Boolean first_time = True;
- X static String old_msg = NULL;
- X--- 124,130 ----
- X XtTextBlock textblock;
- X XtTextPosition pos;
- X Widget button, icon, popup, iw;
- X! char tmp[128], *c;
- X int num;
- X static Boolean first_time = True;
- X static String old_msg = NULL;
- X***************
- X*** 159,166 ****
- X if (c = GetMailrc("nohold")) XtFree(c);
- X else strcat(tmp, "hold ");
- X
- X! strcat(tmp, "nocrt noreplyall");
- X
- X c = QueryMail(tmp);
- X XtFree(c);
- X
- X--- 160,170 ----
- X if (c = GetMailrc("nohold")) XtFree(c);
- X else strcat(tmp, "hold ");
- X
- X! c = QueryMail(tmp);
- X! XtFree(c);
- X
- X+ strcpy(tmp, "unset crt replyall");
- X+
- X c = QueryMail(tmp);
- X XtFree(c);
- X
- X***************
- X*** 176,182 ****
- X sprintf(tmp, "%d", msgnum);
- X XtFree(msg);
- X msg = QueryMail(tmp);
- X! markIndex(" ");
- X }
- X }
- X }
- X--- 180,186 ----
- X sprintf(tmp, "%d", msgnum);
- X XtFree(msg);
- X msg = QueryMail(tmp);
- X! markIndex("> ");
- X }
- X }
- X }
- X***************
- X*** 186,191 ****
- X--- 190,196 ----
- X icon_handler, NULL);
- X first_time = False;
- X }
- X+ strcpy(Command, "");
- X break;
- X /*
- X ** In response to normal or change folder commands, test output. If an
- X***************
- X*** 201,206 ****
- X--- 206,215 ----
- X switch (j) {
- X case O_BELL : Bell(msg);
- X XtFree(msg);
- X+ pos = XtTextGetInsertionPoint(WidgetOf(
- X+ WidgetOf(toplevel,"topBox"),
- X+ "indexWindow")) + 1;
- X+ msgnum = PositionToMsgNumber(pos);
- X msg = QueryMail("file");
- X if (strncmp(&msg[1], tmpName, strlen(tmpName)) == 0) {
- X UpdateTitleBar("No current folder");
- X***************
- X*** 207,218 ****
- X iw = WidgetOf(toplevel, "topBox");
- X writeText(WidgetOf(iw, "indexWindow"), " ", FALSE);
- X writeTo(WidgetOf(iw, "textWindow"), " ");
- X }
- X XtFree(msg);
- X *msg='\0';
- X break;
- X case O_EXEC : msgnum = index_handler(0, 0);
- X! markIndex(" ");
- X break;
- X case O_FILE : msgnum = file_handler(1);
- X c = index(msg, '\n');
- X--- 216,231 ----
- X iw = WidgetOf(toplevel, "topBox");
- X writeText(WidgetOf(iw, "indexWindow"), " ", FALSE);
- X writeTo(WidgetOf(iw, "textWindow"), " ");
- X+ } else {
- X+ XtFree(msg);
- X+ sprintf(tmp, "f %d", msgnum);
- X+ msg = QueryMail(tmp);
- X }
- X XtFree(msg);
- X *msg='\0';
- X break;
- X case O_EXEC : msgnum = index_handler(0, 0);
- X! markIndex("> ");
- X break;
- X case O_FILE : msgnum = file_handler(1);
- X c = index(msg, '\n');
- X***************
- X*** 233,239 ****
- X sprintf(tmp, "%d", msgnum);
- X XtFree(msg);
- X msg = QueryMail(tmp);
- END_OF_FILE
- if test 53806 -ne `wc -c <'Patch.02c'`; then
- echo shar: \"'Patch.02c'\" unpacked with wrong size!
- fi
- # end of 'Patch.02c'
- fi
- echo shar: End of archive 5 \(of 5\).
- cp /dev/null ark5isdone
- MISSING=""
- for I in 1 2 3 4 5 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 5 archives.
- echo Now ...
- echo "concatenate these five Patch.02? files (in order) into one file ..."
- echo "and apply to a set of xmail 1.1 sources, using the 'patch' program."
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-
- dan
- ----------------------------------------------------
- O'Reilly && Associates argv@sun.com / argv@ora.com
- Opinions expressed reflect those of the author only.
-